<?php

/**
 * Created by PhpStorm.
 * User: Administrator
 * Date: 2019/8/22
 * Time: 12:48
 */
class 多维数组进行排序
{
    /*
      function:二维数组按指定的键值排序
      $array=array(
      0=>array('id'=>8,'username'=>'phpernote'),
      1=>array('id'=>9,'username'=>'com'),
      2=>array('id'=>5,'username'=>'www')
      );

      现在需要将这个二维数组按id升序排列，则：

      array_sort($array,'id','asc');

    */
    public function array_sort($array,$keys,$type='asc'){
        if(!isset($array) || !is_array($array) || empty($array)){
            return '';
        }
        if(!isset($keys) || trim($keys)==''){
            return '';
        }
        if(!isset($type) || $type=='' || !in_array(strtolower($type),array('asc','desc'))){
            return '';
        }
        $keysvalue=array();
        foreach($array as $key=>$val){
            $val[$keys] = str_replace('-','',$val[$keys]);
            $val[$keys] = str_replace(' ','',$val[$keys]);
            $val[$keys] = str_replace(':','',$val[$keys]);
            $keysvalue[] =$val[$keys];
        }
        asort($keysvalue); //key值排序
        reset($keysvalue); //指针重新指向数组第一个
        foreach($keysvalue as $key=>$vals) {
            $keysort[] = $key;
        }
        $keysvalue = array();
        $count=count($keysort);
        if(strtolower($type) != 'asc'){
            for($i=$count-1; $i>=0; $i--) {
                $keysvalue[] = $array[$keysort[$i]];
            }
        }else{
            for($i=0; $i<$count; $i++){
                $keysvalue[] = $array[$keysort[$i]];
            }
        }
        return $keysvalue;
    }
}

